const setObj = new Set()
setObj.add(1)  //{1}
setObj.add(1)  //{1}
setObj.add(undefined)  //{1,5,0,undefined}
setObj.add(undefined)  //{1,5,0,undefined}
setObj.add(NaN)  //{1,5,0,undefined,NaN}
setObj.add(NaN)  //{1,5,0,undefined,NaN}
setObj.add(1)  //{1}
setObj.add(5)  //{1,5}
setObj.add(+0)  //{1,5,0}
setObj.add(-0)  //{1,5,0}
setObj.add(null)  //{1,5,0}
setObj.add(null)  //{1,5,0}
setObj.clear()
console.log(setObj)



let key = {a:1}
const ws = new WeakSet()
ws.add(key)
console.log(ws)  //由于weakMap无法遍历，无法通过打印输出查看weakSet中的元素个数，只能通过has方法

console.log(ws.has(key))  //true

key = null  //对象无其他强引用，则会被垃圾回收，会自动从weakSet中删除
console.log(ws.has(key))  //false